package cn.demo.d01;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        // test06();
        // System.out.println("--------------------------------");
        // test07();
        // System.out.println("--------------------------------");
        // test08();
        // test09();
        // System.out.println("--------------------------------");
        // test10();
        // System.out.println("--------------------------------");
        // test11();
        // System.out.println("--------------------------------");
        // test12();
        // System.out.println("--------------------------------");
        // test13();
        // System.out.println("--------------------------------");
        // test14();
        // System.out.println("--------------------------------");
        test15();
        System.out.println("--------------------------------");
    }

    /**
     李雷想买一个价值7988元的新手机，她的旧手机在二手市场能卖1500元，而手机专卖店推出以旧换新的优惠，
     把她的旧手机交给店家，新手机就能够打8折优惠。为了更省钱，李雷要不要以旧换新？请在控制台输出。
     * */
    public static void test06(){
        double price1 = 7988 - 1500;
        double price2 = 7988*0.8;
        System.out.println("price1:"+price1+", price2:"+price2);
        System.out.println(price2>price1);
    }

    /**
     让用户依次录入三个整数，求出三个数中的最小值，并打印到控制台。
     * */
    public static void test07(){
        System.out.println("让用户依次录入三个整数，求出三个数中的最小值，并打印到控制台。");
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        int num3 = sc.nextInt();
        int min = num1<num2?num1:num2;
        min = min<num3?min:num3;
        System.out.println("最小值是："+min);
    }

    /**
     某银行推出了整存整取定期储蓄业务，其存期分为一年、两年、三年、五年，到期凭存单支取本息。存款年利率表如下：
     存期		年利率（%）
     一年		2.25
     两年		2.7
     三年		3.25
     五年		3.6
     请存入一定金额（1000起存），存一定年限（四选一），计算到期后得到的本息总额。
     提示：
     存入金额和存入年限均由键盘录入
     本息计算方式：本金+本金×年利率×年限
     * */
    public static void test08(){
        System.out.println("请存入一定金额（1000起存），存一定年限(一年、两年、三年、五年)");
        Scanner sc = new Scanner(System.in);
        double price = sc.nextDouble();
        int year = sc.nextInt();
        double rate = 0.0;
        switch (year) {
            case 1:
                rate = 0.0225;
                break;
            case 2:
                rate = 0.027;
                break;
            case 3:
                rate = 0.0325;
                break;
            case 5:
                rate = 0.036;
                break;
            default:
                System.out.println("输入年限有误");
                return;
        }
        double total = (price * rate)*year+price;
        System.out.println("请存入"+price+"金额，存"+year+"年,到期后得到的本息总额: "+total);
    }

    public static void test09() {
        // 2.创建键盘录入对象
        Scanner sc = new Scanner(System.in);
        // 3.调用方法获取键盘录入的本金和存取年限
        System.out.println("请输入存款金额：");
        int money = sc.nextInt();
        System.out.println("请输入存款年限：");
        int year = sc.nextInt();
        // 4.定义本息和的变量
        double outMoney = 0;
        // 5.根据利率和年限计算本息和
        if (year == 1) {
            outMoney = money + money * 2.25 / 100 * 1;
        } else if (year == 2) {
            outMoney = money + money * 2.7 / 100 * 2;
        } else if (year == 3) {
            outMoney = money + money * 3.25 / 100 * 3;
        } else if (year == 5) {
            outMoney = money + money * 3.6 / 100 * 5;
        } else {
            System.out.println("输入的年限有误");
        }
        // 6.打印输出
        System.out.println("存款" + year + "年后的本息是：" + outMoney);
    }

    /**
     某商场购物可以打折，具体规则如下：
     普通顾客购不满100元不打折，满100元打9折；
     会员购物不满200元打8折，满200元打7.5折；
     不同打折规则不累加计算。
     请根据此优惠计划进行购物结算，键盘录入顾客的类别（0表示普通顾客，1表示会员）和购物的折前金额（整数即可），输出应付金额（小数类型）。
     * */
    private static void test10(){
        System.out.println("某商场购物可以打折，具体规则如下");
        System.out.println("普通顾客购不满100元不打折，满100元打9折；");
        System.out.println("会员购物不满200元打8折，满200元打7.5折；");
        System.out.println("不同打折规则不累加计算。请根据此优惠计划进行购物结算，");
        Scanner sc = new Scanner(System.in);
        System.out.println("录入顾客的类别");
        int type = sc.nextInt();
        System.out.println("购物的折前金额");
        int price = sc.nextInt();
        double outMoney = 0;
        if (type == 0) {
            outMoney = price > 100 ? price*0.9 : price;
        }else if (type == 1) {
            outMoney = price > 200 ? price*0.75 : price*0.8;
        }else{
            System.out.println("不存在的顾客类别");
            return;
        }
        System.out.println("应付金额: " + outMoney);
    }

    /*需求：给你一个整数 x 。
        如果 x 是一个回文整数，打印 true ，否则，返回 false 。
        解释：回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。
        例如，121 是回文，而 123 不是。*/
    private static void test11(){
        System.out.println("请输入一个整数");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int temp = num;
        int result = 0;
        while (num!=0){
            int ge = num%10;
            num = num/10;
            result = result*10+ge;
        }
        System.out.println(temp);
        System.out.println(result);
        if (result == temp) {
            System.out.println(temp+" 是回文数");
        }else{
            System.out.println(temp+" 不是回文数");
        }
    }

    /*需求：给定两个整数，被除数和除数（都是正数，且不超过int的范围） 。
        将两数相除，要求不使用乘法、除法和 % 运算符。
        得到商和余数。

        分析：
            被除数 / 除数 = 商 ... 余数

        int a = 100;
        int b = 10;

        100 - 10 = 90
        90 - 10 = 80
        80 - 10 = 70
        70 - 10 = 60
        ...
        10 - 10 = 0 (余数)

        */
    private static void test12(){
        System.out.println("给定两个整数，被除数和除数");
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入被除数");
        int bcsNum = sc.nextInt();
        System.out.println("请输入除数");
        int csNum = sc.nextInt();
        int count = 0;
        while (bcsNum>csNum){
            bcsNum -= csNum;
            count++;
        }
        System.out.println("商为: "+count);
        System.out.println("余数为: "+bcsNum);
    }

    /**
     2019年1月1日起，国家推出新的个人所得税政策，起征点上调值5000元。也就是说税前工资扣除三险一金（三险一金数额假设是税前工资的10%）后如果不足5000元，则不交税。如果大于5000元，那么大于5000元的部分按梯度交税，具体梯度比例如下：
     0 ~ 3000元的部分，交税3%
     3000 ~ 12000元的部分，交税10%
     12000 ~ 25000的部分 ， 交税20%
     25000 ~ 35000的部分，交税25%
     35000 ~ 55000的部分，交税30%
     55000 ~ 80000的部分，交税35%
     超过80000的部分，交税45%

     比如：张三入职一家企业后，税前工资是15000，则他每月该交个税的部分是15000-1500-5000=8500元，个税缴纳数额是3000×3%+5500×10%=640元。税后工资12860元。
     * */
    private static void test13(){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的税前工资：");
        //2.键盘录入税前工资
        int money = sc.nextInt();
        //3.计算应纳税部分的工资
        double before = money - (money*0.1) - 5000;
        //4.定义个税变量
        double shui = 0;
        //5.按照梯度范围计算个税数值
        if(before > 0 && before <=3000){
            shui = before * 0.03;
        }else if(before > 3000 && before <=12000){
            shui = 3000*0.03 + (before-3000) * 0.1;
        }else if(before > 12000 && before <=25000){
            shui = 3000*0.03 + 9000*0.1 +  (before-12000)*0.2;
        }else if(before > 25000 && before <=35000){
            shui = 3000*0.03 + 9000*0.1 + 13000*0.2 + (before-25000)*0.25;
        }else if(before > 35000 && before <=55000){
            shui = 3000*0.03 + 9000*0.1 + 13000*0.2 + 10000*0.25 + (before-35000)*0.3;
        }else if(before > 55000 && before <=80000){
            shui = 3000*0.03 + 9000*0.1 + 13000*0.2 + 10000*0.25 + 20000*0.3 + (before-55000)*0.35;
        }else if(before > 80000){
            shui = 3000*0.03 + 9000*0.1 + 13000*0.2 + 10000*0.25 + 20000*0.3 + 25000*0.35 + (before-80000)*0.45;
        }
        //6.计算税后工资
        double after = money - (money*0.1) - shui;
        //7.打印个税和税后工资
        System.out.println("个人所得税" + shui + "元");
        System.out.println("税后工资" + after + "元");
    }

    /**
     已知2019年是猪年，请在控制台输出从1949年到2019年中所有是猪年的年份。
     * */
    public static void test14() {
        for (int i = 2019; i >= 1949; i-=12) {
            System.out.println(i);
        }
        System.out.println("--------------------");
        //1.循环开始是1949 结束是2019
        for (int i = 1949; i < 2019; i++) {
            //2.如果年份和2019年的差值是12的倍数 则说明是猪年
            if( (2019 - i) % 12 == 0 ){
                //3.打印符合条件的年份
                System.out.println(i);
            }
        }
    }

    /**
     中国有闰年的说法。闰年的规则是：四年一闰，百年不闰，四百年再闰。
     （年份能够被4整除但不能被100整除算是闰年，年份能被400整除也是闰年）。请打印出1988年到2019年的所有闰年年份。
     * */
    public static void test15(){
        for (int i = 1988; i < 2019; i++) {
            if(i%4==0&&i%100!=0 || i%400==0){
                System.out.println(i+" 是闰年");
            }
        }
    }
}
